package com.ruoyi.generator.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;

import javax.validation.Valid;
import java.util.List;

/**
 * 单设计_配置对象 sys_from_build_config
 *
 * @author XL
 * @date 2022-08-05 12:01:23
 */
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler"})
@Data
public class FromBuildConfig extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    @JsonProperty(value = "id")
    private Long id;

    /**
     * 表单设计KEY
     */
    @Excel(name = "表单设计KEY")
    @JsonProperty(value = "buildKey")
    private String buildKey;

    /**
     * 表单项UUID
     */
    @Excel(name = "表单项UUID")
    @JsonProperty(value = "formUuid")
    private String formUuid;

    /**
     * changeTag
     */
    @Excel(name = "changeTag")
    @JsonProperty(value = "changeTag")
    private String changeTag;

    /**
     * 能否清空
     */
    @Excel(name = "能否清空")
    @JsonProperty(value = "clearable")
    private String clearable;

    /**
     * 默认值
     */
    @Excel(name = "默认值")
    @JsonProperty(value = "defaultValue")
    private Object defaultValue;

    /**
     * 是否禁用
     */
    @Excel(name = "是否禁用")
    @JsonProperty(value = "disabled")
    private String disabled;

    /**
     * 表单组件ID
     */
    @Excel(name = "表单组件ID")
    @JsonProperty(value = "formId")
    private String formId;

    /**
     * 表单标题
     */
    @Excel(name = "表单标题")
    @JsonProperty(value = "label")
    private String label;


    @Excel(name = "标题长度")
    @JsonProperty(value = "labelWidth")
    private Integer labelWidth;


    @Excel(name = "是否显示标签")
    private String showLabel;

    /**
     * 布局方式
     */
    @Excel(name = "布局方式")
    @JsonProperty(value = "layout")
    private String layout;

    /**
     * 内容最大长度
     */
    @Excel(name = "内容最大长度")
    @JsonProperty(value = "maxlength")
    private Long maxlength;

    /**
     * 占位提示
     */
    @Excel(name = "占位提示")
    @JsonProperty(value = "placeholder")
    private String placeholder;

    /**
     * 内容前图标
     */
    @Excel(name = "内容前图标")
    @JsonProperty(value = "prefixIcon")
    private String prefixIcon;

    /**
     * 内容后图标
     */
    @Excel(name = "内容后图标")
    @JsonProperty(value = "suffixIcon")
    private String suffixIcon;

    /**
     * 是否只读
     */
    @Excel(name = "是否只读")
    @JsonProperty(value = "readonly")
    private String readonly;

    /**
     * 是否必填
     */
    @Excel(name = "是否必填")
    @JsonProperty(value = "required")
    private String required;

    /**
     * ShowWordLimit
     */
    @Excel(name = "ShowWordLimit")
    @JsonProperty(value = "showWordLimit")
    private String showWordLimit;

    /**
     * 表单栅格
     */
    @Excel(name = "表单栅格")
    @JsonProperty(value = "span")
    private Long span;

    /**
     * 表单样式
     */
    @Excel(name = "表单样式")
    @JsonProperty(value = "style")
    private Object style;

    /**
     * 组件类型
     */
    @Excel(name = "组件类型")
    @JsonProperty(value = "tag")
    private String tag;

    /**
     * 组件图标
     */
    @Excel(name = "组件图标")
    @JsonProperty(value = "tagIcon")
    private String tagIcon;

    /**
     * 组件类型
     */
    @Excel(name = "组件类型")
    @JsonProperty(value = "moduleType")
    private String moduleType;

    /**
     * 字段名
     */
    @Excel(name = "字段名")
    @JsonProperty(value = "vModel")
    private String vModel;

    /**
     * 是否有子组件__0否，1是
     */
    @Excel(name = "是否有子组件__0否，1是")
    @JsonProperty(value = "hasChildren")
    private String hasChildren;

    /**
     * 表单父组件UUID
     */
    @Excel(name = "表单父组件UUID")
    @JsonProperty(value = "parentFormUuid")
    private String parentFormUuid;

    /**
     * 排序
     */
    @Excel(name = "排序")
    @JsonProperty(value = "sort")
    private Integer sort;

    /**
     * 层级
     */
    @Excel(name = "层级")
    @JsonProperty(value = "grade")
    private Integer grade;

    /**
     * 字典编码
     */
    @Excel(name = "字典编码")
    @JsonProperty(value = "optionDictCode")
    private String optionDictCode;

    /**
     * 允许上传
     */
    @Excel(name = "允许上传")
    @JsonProperty(value = "allowUpload")
    private String allowUpload;

    /**
     * 显示分页
     */
    @Excel(name = "显示分页")
    @JsonProperty(value = "showPagination")
    private String showPagination;

    /**
     * 组件高度
     */
    @Excel(name = "组件高度")
    @JsonProperty(value = "height")
    private String height;

    /**
     * 请求URL前缀
     */
    @Excel(name = "请求URL前缀")
    @JsonProperty(value = "prefixUrl")
    private String prefixUrl;

    /**
     * 数据新增
     */
    @Excel(name = "数据新增")
    @JsonProperty(value = "allowAdd")
    private String allowAdd;

    /**
     * 数据修改
     */
    @Excel(name = "数据修改")
    @JsonProperty(value = "allowUpdate")
    private String allowUpdate;

    /**
     * 数据删除
     */
    @Excel(name = "数据删除")
    @JsonProperty(value = "allowDelete")
    private String allowDelete;

    /**
     * 数据导入
     */
    @Excel(name = "数据导入")
    @JsonProperty(value = "allowImport")
    private String allowImport;

    /**
     * 数据导出
     */
    @Excel(name = "数据导出")
    @JsonProperty(value = "allowExport")
    private String allowExport;

    /**
     * 按钮类型
     */
    @Excel(name = "按钮类型")
    @JsonProperty(value = "type")
    private String type;


    /**
     * 按钮大小
     */
    @Excel(name = "按钮大小")
    @JsonProperty(value = "size")
    private String size;

    /**
     * 联动字段
     */
    @Excel(name = "联动字段")
    @JsonProperty(value = "linkVModel")
    private String linkVModel;

    /**
     * 联动请求URL
     */
    @Excel(name = "联动请求URL")
    @JsonProperty(value = "linkVModelOptionUrl")
    private String linkVModelOptionUrl;

    /**
     * 联动条件
     */
    @Excel(name = "联动条件")
    @JsonProperty(value = "linkVModelCondition")
    private String linkVModelCondition;

    /**
     * 开启值
     */
    @Excel(name = "开启值")
    @JsonProperty(value = "activeValue")
    private String activeValue;

    /**
     * 关闭值
     */
    @Excel(name = "关闭值")
    @JsonProperty(value = "inactiveValue")
    private String inactiveValue;

    /**
     * 是否多选
     */
    @Excel(name = "是否多选")
    @JsonProperty(value = "multiple")
    private String multiple;

    /**
     * 请求类型
     */
    @Excel(name = "请求类型")
    @JsonProperty(value = "linkVModelOptionReqType")
    private String linkVModelOptionReqType;


    /**
     * 子表服务类名
     */
    @Excel(name = "子表服务类名")
    @JsonProperty(value = "serviceName")
    private String serviceName;

    /**
     * 子表关联字段__存在子表的情况下
     */
    @Excel(name = "子表关联字段__存在子表的情况下")
    @JsonProperty(value = "foreignKey")
    private String foreignKey;

    /**
     * 主表关联字段__存在子表的情况下
     */
    @Excel(name = "主表关联字段__存在子表的情况下")
    @JsonProperty(value = "primaryTableKey")
    private String primaryTableKey;

    /**
     * 终端类型__PC_Mobile
     */
    @Excel(name = "终端类型")
    private String clientType;

    /**
     * 结果是否处理到其他值
     */
    @Excel(name = "结果是否处理到其他值")
    private String isAssignOtherModel;

    /**
     * 赋值类型
     */
    @Excel(name = "赋值类型")
    private String assignType;

    /**
     * 赋值字段
     */
    @Excel(name = "赋值字段")
    private String assignModel;

    /**
     * 搜索模块__针对搜索文本框时的配置
     */
    @Excel(name = "搜索模块__针对搜索文本框时的配置")
    private String searchModel;

    /**
     * 是否展示__数据查询区域，是否展示
     */
    @Excel(name = "是否展示__数据查询区域，是否展示")
    private String isQuery;

    /**
     * 查询方式
     */
    @Excel(name = "查询方式")
    private String queryType;

    /**
     * 列表展示__数据列表中是否展示
     */
    @Excel(name = "列表展示")
    private String isListShow;

    /**
     * 列表宽度
     */
    @Excel(name = "列表宽度")
    private String listColumnWidth;

    /**
     * 对齐方式__left/center/right
     */
    @Excel(name = "对齐方式")
    private String listColumnAlign;

    /**
     * 多行文本框，行数设置
     * autosize="{ minRows: 2, maxRows: 4}"
     */
    @Excel(name = "多行文本框，行数设置")
    private Object autosize;

    /**
     * 时间日期格式
     * 如：yyyy-MM-dd HH:mm:ss
     */
    @Excel(name = "时间日期格式")
    private String format;

    /**
     * 组件配置__如：图表配置
     */
    @Excel(name = "组件配置__如：图表配置")
    private String config;

    /**
     * 组件配置__如：图表默认数据
     */
    @Excel(name = "组件配置__如：图表默认数据")
    private String configDefaultData;

    /**
     * 优树搭API
     */
    @Excel(name = "优树搭API")
    private String ysdApi;

    /**
     * 是否显示标题
     */
    @Excel(name = "是否显示标题")
    private String isShowTitle;

    /**
     * 是否显示边框
     */
    @Excel(name = "是否显示边框")
    private String isShowBorder;

    /**
     * 标题背景颜色__HEX格式如：#FFFFFF
     */
    @Excel(name = "标题背景颜色__HEX格式如：#FFFFFF")
    private String titleBackgroundColor;

    /**
     * 容器组件__标题颜色__HEX格式如：#FFFFFF
     */
    @Excel(name = "容器组件__标题颜色__HEX格式如：#FFFFFF")
    private String titleFontColor;

    /**
     * 容器水平排列方式__start/end/center
     */
    @Excel(name = "容器水平排列方式__start/end/center")
    private String justify;

    /**
     * 容器垂直排列方式__top/middle/bottom
     */
    @Excel(name = "容器垂直排列方式__top/middle/bottom")
    private String align;

    /**
     * 点击事件
     */
    @Excel(name = "点击事件")
    private String onClick;
    /**
     * 输入框中输入时就会触发
     */
    @Excel(name = "输入框中输入时就会触发")
    private String onInput;
    /**
     * 输入框完成内容输入并失焦后触发
     */
    @Excel(name = "输入框完成内容输入并失焦后触发")
    private String onChange;
    /**
     * 获得焦点事件
     */
    @Excel(name = "获得焦点事件")
    private String onFocus;
    /**
     * 失去焦点事件
     */
    @Excel(name = "失去焦点事件")
    private String onBlur;

    /**
     * 组件是否显示__存在组件默认不显示需要通过事件来触发显示
     */
    @Excel(name = "组件是否显示__存在组件默认不显示需要通过事件来触发显示")
    private String isShow;

    /**
     * ------------------------------附件上传------------------------------
     */
    /**
     * 附件上传__是否支持多选文件
     */
    @Excel(name = "附件上传__是否支持多选文件")
    private String attaMultiple;
    /**
     * 附件上传__业务类型
     */
    @Excel(name = "附件上传__业务类型")
    private String attaBusinessType;
    /**
     * 附件上传__最大允许上传个数
     */
    @Excel(name = "附件上传__最大允许上传个数")
    private int attaLimit;
    /**
     * 附件上传__接受上传的文件类型
     */
    @Excel(name = "附件上传__接受上传的文件类型")
    private String attaAccept;
    /**
     *  附件下载__优树搭API
     */
    @Excel(name = " 附件下载__优树搭API")
    private String ysdApiToDownload;
    /**
     *  是否允许附件下载
     */
    @Excel(name = "是否允许附件下载")
    private String allowDownload;

    /**
     * tinymce编译器是否隐藏右下角品牌烙印
     */
    @Excel(name = "品牌烙印")
    private String branding;

    /**
     * 提示信息__标题
     */
    @Excel(name = "提示信息__标题")
    private String title;

    /**
     * 提示信息__内容
     */
    @Excel(name = "提示信息__内容")
    private String description;

    /**
     * 提示信息__内容是否居中
     */
    @Excel(name = "提示信息__内容是否居中")
    private String center;

    /**
     * 提示信息__是否显示图标
     */
    @Excel(name = "提示信息__是否显示图标")
    private String showIcon;

    /**
     * 配置子表时，指定关联业务模块对应的菜单
     */
    private String bindMenu;


    /**
     * 删除标识
     */
    @Excel(name = "删除标识")
    private String delFlag;

    /**
     * 图片地址
     */
    @Excel(name = "图片地址")
    private String src;

    /**
     * 图片懒加载__是否当图片滚动到可视范围内才会加载
     */
    @Excel(name = "图片懒加载__是否当图片滚动到可视范围内才会加载")
    private String lazy;

    /**
     * 图片渲染方式__图片如何适应容器框fill/contain/cover/none/scale-down
     */
    @Excel(name = "图片渲染方式__图片如何适应容器框fill/contain/cover/none/scale-down")
    private String fit;




    /**
     * 校验规则
     */
    @Valid
    @JsonProperty(value = "regList")
    private List<FromBuildRuleConfig> regList;
    /**
     * 选项值
     */
    @Valid
    @JsonProperty(value = "options")
    private List<FromBuildOptionsConfig> options;
    /**
     * 子组件
     */
    @Valid
    @JsonProperty(value = "children")
    private List<FromBuildConfig> children;

}
